package com.aismall.service;

import com.aismall.spring.Autowired;
import com.aismall.spring.BeanNameAware;
import com.aismall.spring.Component;
import com.aismall.spring.InitializingBean;

/**
 * @ClassName UserService
 * @Description TODO
 * @Author @AISMALL
 * @Date 2024/4/2 20:54
 */

@Component
public class UserService implements UserInterface, InitializingBean, BeanNameAware{
    @Autowired
    private OrderService orderService;
    private String beanName; // 保存bean的名字

    private String customizationProperty;  // 定制化属性
    public UserService() {
    }


    // 此方法不是我们自己调用，而是框架调用，目的是告诉我们这个bean的名字是什么
    // 因为有些时候开发不会按照标准约定来定义bean的名字
    @Override
    public void setBeanName(String beanName) {
        this.beanName = beanName;
    }

    //// 此方法用于在spring的bean初始化的过程中，给bean进行一些定制化的操作
    //@Override
    public void afterPropertiesSet() {
        // 之后通过回调的方式，执行该方法，是框架执行过程中帮我们执行
        System.out.println("customizationProperty");
        this.customizationProperty="customizationProperty";
    }

    public void test() {
        System.out.println("依赖注入测试：" + orderService);

    }

    @Override
    public void enhanceTest() {
        System.out.println("AOP测试：" +  beanName);
    }
}
